package com.dkha.common.util;

import com.dkha.common.exception.EmployeeException;

/**
 * @ClassName:
 * @Description:(please write your description)
 * @author: {开发人的姓名}
 * @date:
 * @Copyright: 成都电科惠安
 */
public class NameUtil {

    public static String createAsterisk(int length) {
        StringBuffer stringBuffer = new StringBuffer();
        for (int i = 0; i < length; i++) {
            stringBuffer.append("*");
        }
        return stringBuffer.toString();
    }

    public static String getNames(String name) {
        if (UtilValidate.isEmpty(name)) {
            throw new EmployeeException("不能输入空");
        }
        String[] show = name.split("·");
        if (show.length == 2) {
            name = show[0] + createAsterisk(show[1].length());
            return name;
        }

        return name;
    }

    /**
     * @param idCardNum 身份证号码
     * @param front 需要显示前几位
     * @param end 需要显示末几位
     * @return
     */
    public static String idMask(String idCardNum, int front, int end) {
        // 身份证不能为空
        if (UtilValidate.isEmpty(idCardNum)) {
            throw new EmployeeException("不能输入空");
        }
        // 需要截取的长度不能大于身份证号长度
//        if ((front + end) > idCardNum.length()) {
//            throw new EmployeeException("需要截取的长度不能大于身份证号长度");
//        }
//        // 需要截取的不能小于0
//
//        if (front < 0 || end < 0) {
//            throw new EmployeeException("需要截取的不能小于0");
//        }
        // 计算*的数量
        int asteriskCount = idCardNum.length() - (front + end);
        StringBuffer asteriskStr = new StringBuffer();
//        for (int i = 0; i < asteriskCount; i++) {
            asteriskStr.append("********");
//        }
        String regex = "(\\w{" + String.valueOf(front) + "})(\\w+)(\\w{" + String.valueOf(end) + "})";
        return idCardNum.replaceAll(regex, "$1" + "********" + "$3");
    }


    /**
     * 正则表达式判断是否是数字:   完美
     * @param str
     * @return
     */
    public static boolean isNumber(String str){
        String reg = "^[0-9]+(.[0-9]+)?$";
        return str.matches(reg);
    }

    /**
     * ASCII码 ，不能判断小数点有几个 ：1.1.1 也会返回true
     * @param str
     * @return
     */
    public static boolean isNumeric(String str){
        for(int i=str.length();--i>=0;){
            int chr=str.charAt(i);
            System.out.println(chr);
            if(chr<48 || chr>57) {
                if(chr != 46){
                    return false;
                }
            }
        }
        return true;
    }

//    public static void main(String[] args) {
//        String id ="513902199202293979E.5";
//        System.out.println(NameUtil.isNumber(id));
//    }
}
